Selene Shepard поделилась ссылкой
2 декабря 2013 года, 14:14
#11684: Тряхнём стариной
В середине девяностых загибающийся НИИ получил заказ. Предстояло сделать программно-аппаратный комплекс для телеметрических измерений вибраций стартового стола для пусков ракет из окрестностей острова Кирибати. Денег дали… Дом в Майами построить хватило бы наверняка, Кирибати эту купить — 50 на 50, а для нормального телеметрического комплекса — как бы маловато.

К этому времени институт превратился в конфедерацию горских народов, то бишь малых предприятий. В одном из них работал я. Старая элементная база разваливалась, да и не дружила особо с буржуйской техникой. Из новых разработок была измерительная плата под разъём ISA с драйверами исключительно под DOS. А зачем писать драйвера под DOS, если в любой порт можно влезть и без них? Дополнительная проблема была в том, что количество килогерц, с которым надо снимать информацию с датчиков, совпадало с теоретической пропускной способностью шины ISA. Потом надо было передавать записанную инфу по радиоканалу на скорости 9600 бит в секунду через навязанную нам коммуникационную плату, для которой были тоже только досовские драйвера. На вопрос, от каких вибраций защищаться, был дан ответ: «Вот это вы нам и измерите».

Винчестер сдох ещё до вибростенда. Просто встряхнул я его в руках во время копирования файлов и отнёс по гарантии. Нашли зато волшебный порт, который останавливает винчестер. Для софта вставили флеш-диск аж на 8 мегабайт за штуку баксов (1995 год, однако). Телеметрию стали писать в ОЗУ. Для этого на машину с 8-мегабайтным диском С: поставили 128 мегабайт памяти. Столько DOS в принципе не видит. Перешли в защищённый режим, но драйвера-то ко всему железу досовские, реального режима… Прокинули к ним костыль, и всё срослось.

За минуту до старта сначала останавливаем винчестер. Потом глушим все прерывания вплоть до системных часов. Ракета делает большой «бум», при этом измерительная плата сама пишет прямо в ОЗУ, компьютер висит сбоку ненужной вещью. Через пять минут после отлёта винчестер раскручивается, разрешаем часам тикать и восстанавливаем время по показаниям CMOS. Пишем файлы из ОЗУ на винчестер и начинаем неспешно передавать их по радиоканалу на корабль…

Эта система, с позволения сказать, реального времени работает второй десяток лет без сбоев. Эксплуатация её — отдельная песня, но об этом я уже писал.